// import com.alibaba.druid.sql.ast.SQLExpr*;
// import com.alibaba.druid.sql.ast.SQLName*;
// import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;

// import java.util.ArrayList;
// import java.util.std::list;
#pragma once
#include "../../../../../sql/dialect/mysql/ast/MySqlObjectImpl.h"
#include <list>

class SQLName;
class SQLExpr;
class MySqlASTVisitor;
class MySqlExtPartition;

class MySqlExtPartition_Item : public MySqlObjectImpl /*,virtual public Cloneable*/
{
  public:
  SQLName_ptr dbPartition;
  SQLExpr_ptr dbPartitionBy;
  SQLName_ptr tbPartition;
  SQLExpr_ptr tbPartitionBy;

  SHAREDOBJECT(MySqlExtPartition_Item);
  // @Override
  void accept0(MySqlASTVisitor_ptr visitor);

  // MySqlExtPartition_Item_ptrclone();
virtual SQLObject_ptr clone();
  SQLName_ptr getDbPartition();

  void setDbPartition(SQLName_ptr x);

  SQLName_ptr getTbPartition();

  void setTbPartition(SQLName_ptr x);

  SQLExpr_ptr getDbPartitionBy();

  void setDbPartitionBy(SQLExpr_ptr x);

  SQLExpr_ptr getTbPartitionBy();

  void setTbPartitionBy(SQLExpr_ptr x);
};

class MySqlExtPartition : public MySqlObjectImpl /*implements Cloneable*/
{
  public:
  std::shared_ptr<std::list<MySqlExtPartition_Item_ptr>> items;

  std::shared_ptr<std::list<MySqlExtPartition_Item_ptr> >getItems();

  MySqlExtPartition();
  SHAREDOBJECT(MySqlExtPartition);
  // @Override
  void accept0(MySqlASTVisitor_ptr visitor);

  // MySqlExtPartition *clone();
  virtual SQLObject_ptr clone();
};
